//? 服务器接收请求并且取出请求携带的参数 

//! 引入第三方包 express
var express = require('express')
//! 引入第三方包 express-jwt
var { expressjwt } = require('express-jwt')



//! 实例化express
var app = express()


//! 设置静态托管文件夹
//@ app.use() 注册中间件
//@ express.static() express内置的一个静态资源托管的中间件
app.use(express.static('static'))

//2 顺序2
//! 在所有接口前设置处理post请求参数的中间件
app.use(express.json())
app.use(express.urlencoded({ extended: false }))


//! 设置一个token验证的中间件
//! unless设置白名单（白名单中的接口都可以免除验证）
app.use(expressjwt({
    secret: '1234',//密钥
    algorithms: ['HS256'], //算法
}).unless( { path:['/user/login','/user/register'] } ) );



//! 导入拆分出去的子路由
var userRouter = require('./router/userRouter')
var goodRouter = require('./router/goodRouter')


//!定义返回给客户端的数据
// var arr = [
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15929780085@qq.com', name: 'zh', phone: '15929780085', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '18092602390@qq.com', name: 'vrc', phone: '18092602390', pass: '1234', ingroup: '编辑组', isadmin: true, status: false
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: true
//     },
//     {
//         email: '15291695373@qq.com', name: 'ljq', phone: '15291695373', pass: '1234', ingroup: '编辑组', isadmin: true, status: false
//     },
// ]

//! 注册子路由,但凡是'/user'开头的请求，都找userRouter这个子路由来提供服务
//! 前端发请求'/user/list','/user/search','/user/login'都会找userRouter
app.use('/user', userRouter)
//! 前端发请求'/good/list','/good/search'都会找goodRouter
app.use('/good', goodRouter)

//! 服务器端存储数据 可以使用json文件也可以使用数据库软件
//! 使用json文件存储数据的弊端 任何一个人只要拿到该文件都可以看到文件内容(不安全)
//! 使用json文件存储数据的弊端  存储海量数据 可能存储数据丢失

//! 使用数据库软件存储数据的弊端 有一定的门槛(学习)
//! 使用数据库软件存储数据的优势 存储在数据库中的数据都是经过加密的，海量的会自动拆分文件存储，有防内存溢出的手段


// app.put()

// app.delete()



//! 设置监听
app.listen(8060, () => {
    console.log('服务端运行在：http://localhost:8060');
})
